// 该文件用于创建Vuex中最为核心的store

// 引入Vue
import Vue from 'vue'

// 引入Vuex
import Vuex from 'vuex'

// 应用Vuex插件
Vue.use(Vuex)

// 准备actions---响应组件中的动作
const actions={
    // context(上下文)---miniStore
  /* 
    jia:function(context,value){
        console.log('actions中的jia被调用了',context,value);
        context.commit('JIA',value)
    },
    jian:function(context,value){
        console.log('actions中的jia被调用了',context,value);
        context.commit('JIAN',value)
    },
  */
    jiaOdd:function(context,value){
        console.log('actions中的jiaOdd被调用了',context);
        console.log('处理了一些事情---jiaOdd')
        context.dispatch('demo1',value)
    },
    demo1(context,value){
        console.log('处理了一些事情---demo1')
        context.dispatch('demo2',value)
    },
    demo2(context,value){
        console.log('处理了一些事情---demo2')
        if(context.state.sum%2){
            context.commit('JIA',value)
        }
    },
    jiaWait:function(context,value){
        console.log('actions中的jiaWait被调用了');
        if(context.state.sum%2){
            setTimeout(()=>{
                context.commit('JIA',value)
            },2000)
          
        }
    },
}

// 准备mutations---操作数据(state)
const mutations={
JIA(state,value){
    console.log('mutations中的JIA被调用了',state,value)
    state.sum+=value
},
JIAN(state,value){
    console.log('mutations中的JIA被调用了',state,value)
    state.sum-=value
}
}

// 准备state---用于存储数据------data
const state={
    sum: 0,//当前的和
   school:'尚硅谷',
   subject:'前端'
}

// 准备getters-用于将state中的数据进行加工-----computed
const getters={
    bigSum(state){
        return state.sum*10
    }
}

// 创建并暴露store
const store=new Vuex.Store({
 /* 
    actions:actions,
    mutations:mutations,
    state:state,
 */
    actions,
    mutations,
    state,
    getters
})
export default store
